package ar.uba.is2.ec.matem.modelo;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

import ar.uba.is2.ec.matem.motor.Regla;

public class ContextoDeModelo {
	
	public Collection<ModeloMatematico> obtenerSubmodelos(ModeloMatematico modelo, int cantProc) {
		
		Collection<Regla> reglas = modelo.getReglas();
		
		int cantReglasPorProc = Double.valueOf(Math.ceil((double)reglas.size() / (double)cantProc)).intValue();
		
		Collection<ModeloMatematico> submodelos = new ArrayList<ModeloMatematico>();
		Iterator<Regla> it = reglas.iterator();
		for (int proc = 0; proc < cantProc; proc++) {
			ModeloMatematico submodelo = new ModeloMatematico(modelo.getId());
			
			int cantReglas = 0;
			while (it.hasNext() && cantReglas < cantReglasPorProc) {
				
				submodelo.agregarRegla(it.next());
				
				cantReglas++;
				submodelos.add(submodelo);
			}
		}
		
		
		
		
		return submodelos;
	}
	
}
